function findAnagrams(s, p) {
    const map = new Map();
    for (let i = 0; i < p.length; i++) {
        let c = p.charAt(i);
        map.set(c, map.get(c) ? map.get(c) + 1 : 1);
    }
    let left = 0;
    let right = 0;
    let count = 0;
    let res = [];
    while (right < s.length) {
        let c = s.charAt(right);
        if (map.has(c)) {
            if (map.get(c) !== 0) {
                map.set(c, map.get(c) - 1);
                count++;
                if (count === p.length) {
                    res.push(left);
                    map.set(s.charAt(left), map.get(s.charAt(left)) + 1);
                    count--;
                    left++;
                    right++;
                } else {
                    right++;
                }
            } else {
                // 要丢一个
                while (map.get(c) === 0) {
                    map.set(s.charAt(left), map.get(s.charAt(left)) + 1);
                    count--;
                    left++;
                }
                map.set(s.charAt(right), 0);
                count++;
                right++;
            }
        } else {
            // 字符不属于p
            while (left < right) {
                map.set(s.charAt(left), map.get(s.charAt(left)) + 1);
                count--;
                left++;
            }
            left++;
            right++;
        }
    }
    return res;
}
function test() {
    let s = 'baa';
    let p = 'aa';
    let res = findAnagrams(s, p);
    console.log(res);
}
test();